package com.nova.edc.service.energy;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.nova.edc.model.energy.Energy;
import com.nova.edc.model.system.AreaPoint;
import com.nova.edc.model.system.CollectAreaItem;
import com.nova.edc.model.system.CollectAreaItemAir;
import com.nova.edc.model.system.CustomerArea;

public interface EnergyService {
	//更新相应的空调信息的耗电时间参数
	public int updateAirUseHour(List<CollectAreaItemAir> areaItems,
			int companyCode, String startTime, String endTime);
	// 更新相应的灯具信息的耗电时间参数
	public void updateLightUseHour(List<AreaPoint> areaPoints,
			Integer areaId, String startTime, String endTime);

	// 更新相应的灯具信息的耗电时间参数
	public void updateLightUseHour(List<CollectAreaItem> areaItems,
			List<Integer> companyCodes, String startTime, String endTime);

	// 根据开始日期、结束日期获取某个单位总耗电量，包括传统灯具耗电和LED灯具耗电----数据从summary总结表中获取
	public Energy getEnergyByCompany(int companyCode, String startDate,
			String endDate);

	// 根据开始日期、结束日期获取某个单位总耗电量，包括传统灯具耗电和LED灯具耗电----数据从CollectData总结表中获取
	public Map<String, BigDecimal> getDetailEnergyByCompany(
			Integer companyCode, String startTime, String endTime);

	// 根据开始日期、结束日期获取某个单位总耗电量，包括传统灯具耗电和LED灯具耗电----数据从CollectData总结表中获取
	public Map<String, BigDecimal> getDetailEnergyByCompany(
			List<Integer> companyCodes, String startTime, String endTime);

	// 获取所有灯具的传统灯具耗电量和LED灯具耗电电价
	public Map<String, BigDecimal> getEnergyCost(
			Map<String, BigDecimal> energy, BigDecimal unitPrice);

	// 获取某个时间段内某个单位每天的耗电量
	public List<Map<String, Object>> getEnergyByDate(int companyCode,
			String startDate, String endDate);

	// 获取某个时间段内某个单位每个区域耗电量
	public List<Map<String, Object>> getEnergyByRegion(int companyCode,
			String startDate, String endDate);

	// 获取某个时间段内某个单位每天两种耗电量
	public List<Map<String, Object>> getAllEnergyByDate(int companyCode,
			String startDate, String endDate);

	// 获取某个时间段内多个单位每月的单位值
	public List<Map<String, Object>> getUnitEnergyByDate(String companyCode,
			String startDate, String endDate);

	// 获取某个时间段内每个单位的通宵供电次数
	public List<Map<String, Object>> getAllNightByDate(String companyCode,
			String startTime, String endTime, String startDate, String endDate);

	// 获取某个网关某个月份的详情数据
	public List<Map<String, Object>> getGatewayDetail(String companyCode,
			String searchDate, String gatewayId);
}
